package bishi2016;

public class MeiTuan_Flip {

	public static void main(String[] args) {
		MeiTuan_Flip m = new MeiTuan_Flip();
		int[][] A ={{0,0,0,1},{0,0,1,0},{1,0,1,1},{0,0,0,0}};
		int[][] f ={{3,4},{4,4},{3,4}};
		m.flipChess(A, f);
	}
	public int[][] flipChess(int[][] A, int[][] f) {
		if (A == null || f == null || A.length <= 0 || f.length <= 0) {
			return A;
		}
		int x, y;
		for (int i = 0; i < f.length; i++) {
			x = f[i][0];
			y = f[i][1];
			// 然后将上下左右的棋子颜色翻转
			if (x == 1 && y == 1) {
				change(false, true, true, false, A, x - 1, y - 1);
			} else if (x == 4 && y == 1) {
				change(true, false, true, false, A, x - 1, y - 1);
			} else if (x == 1 && y == 4) {
				change(false, true, false, true, A, x - 1, y - 1);
			} else if (x == 4 && y == 4) {
				change(true, false, false, true, A, x - 1, y - 1);
			} else if (x == 1) {
				change(false, true, true, true, A, x - 1, y - 1);
			} else if (x == 4) {
				change(true, false, true, true, A, x - 1, y - 1);
			} else if (y == 1) {
				change(true, true, true, false, A, x - 1, y - 1);
			} else if (y == 4) {
				change(true, true, false, true, A, x - 1, y - 1);
			} else {
				change(true, true, true, true, A, x - 1, y - 1);
			}
		}
		return A;
	}

	public void change(boolean left, boolean right, boolean down, boolean up,
			int[][] A, int x, int y) {
		if (left) {
			A[x - 1][y] ^= 1; // 左
		}
		if (right) {
			A[x + 1][y] ^= 1; // 右
		}
		if (up) {
			A[x][y - 1] ^= 1; // 上
		}
		if (down) {
			A[x][y + 1] ^= 1; // 下
		}
	}
}
